package com.mes.cloud.enums;


import java.util.HashMap;
import java.util.Map;

/**
 * @author xhy
 * @ClassName: ValidatorClassEnum
 * @Description: 进行校验换算
 */
public enum ValidatorParamEnum {
    /**
     *  请输入整数
     */
    INTEGER_Z0("integer", "^[1-9]\\d*$","请输入整数"),
    /**
     * 请输入整数
     */
    INTEGER_Z1("integer[*]", "^[1-9]\\d*$","请输入整数"),
    /**
     * 请输入正整数
     */
    INTEGER_Z_Z("integer[+]", "^[1-9]\\d*$","请输入正整数"),
    /**
     * 请输入正整数或0
     */
    INTEGER_Z_Z_Or_0("integer[+0]", "^[1-9]\\d*|0$","请输入正整数或0"),
    /**
     * 请输入负整数
     */
    INTEGER_F_F("integer[-]", "^-[1-9]\\d*$","请输入负整数"),
    /**
     * 请输入负整数或0
     */
    INTEGER_F_F_OR_0("integer[-0]", "^-[1-9]\\d*|0$","请输入负整数或0"),
    /**
     * 对正整数相关的数据进行处理 1-99包括边界
     */
    /**
     * 请输入0-99的整数 包括边界
     */
    //RANGE_0_99("range[0~99]","^([0-9]|[1-9][1-9])$","请输入0-99的整数 包括边界"),
    /**
     * 请输入小于等于99的整数
     */
    //RANGE_D_99("range[~99]","^(-?[0-9]|-?[1-9][1-9])$","请输入小于等于99的整数"),
    /**
     * 请输入大于等于0的整数
     */
   // RANGE_X_0("range[0~]","^([0-9]\\d*)$","请输入大于等于0的整数"),
    /**
     * 请输入0-99的整数 包括边界
     */
    //RANGE_0_99_("range(0~99)","^([1-9]|[1-9][1-8])$","请输入0-99的整数 不包括边界"),
    /**
     * 请输入小于等于99的整数
     */
    //RANGE_D_99_("range(~99)","^(-?[0-9]|-?[1-9][1-8])$","请输入小于99的整数"),
    /**
     * 请输入大于等于0的整数
     */
    //RANGE_X_0_("range(0~)","^([1-9]\\d*)$","请输入大于0的整数"),
    /**
     * 验证是否为6-16长度的字符
     */
    LENGTH_6_16("length[6~16]","^[a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&\\*\\_\\+\\{\\}\\:\\\"\\|\\<\\>\\?\\-\\= \\;\\'\\\\\\,\\.\\/]{6,16}$","验证是否为6-16长度的字符"),
    /**
     * 验证是否为6长度的字符
     */
    LENGTH_6("length[6]","^[a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&\\*\\_\\+\\{\\}\\:\\\"\\|\\<\\>\\?\\-\\= \\;\\'\\\\\\,\\.\\/]{6}$","验证是否为6长度的字符"),
    /**
     * 验证是否为小于6长度的字符
     */
    LENGTH_X_6("length[~6]","^[a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&\\*\\_\\+\\{\\}\\:\\\"\\|\\<\\>\\?\\-\\= \\;\\'\\\\\\,\\.\\/]{,6}$","验证是否为小于6长度的字符"),
    /**
     * 验证是否为大于6长度的字符
     */
    LENGTH_D_6("length[6~]","^[a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&\\*\\_\\+\\{\\}\\:\\\"\\|\\<\\>\\?\\-\\= \\;\\'\\\\\\,\\.\\/]{6,}$","验证是否为大于6长度的字符"),
    /**
     * 请填写数字
     */
    DIGITS("digits","^\\d+$","请填写数字"),
    /**
     * 请填写字母
     */
    LETTERS("letters","^[a-zA-Z]+$","请填写字母"),
    /**
     * 请填写有效的日期，格式:yyyy-mm-dd
     */
    DATE("date","^\\d{4}-\\d{2}-\\d{2}$","请填写有效的日期，格式:yyyy-mm-dd"),
    /**
     * 请填写有效的时间，00:00到23:59之间
     */
    TIME("time","^([01]\\d|2[0-3])(:[0-5]\\d){1,2}$","请填写有效的时间，00:00到23:59之间"),
    /**
     * 请填写有效的邮箱
     */
    EMAIL("email","^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$","请填写有效的邮箱"),
    /**
     * 请填写有效的网址
     */
    URL("url","^[a-zA-z]+://匹配(/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/S*)?$","请填写有效的网址"),
    /**
     * 请填写有效的QQ号
     */
    QQ("qq","^[1-9]\\d{4,}$","请填写有效的QQ号"),
    /**
     * 请填写正确的身份证号码
     */
    IDCARD("idcard","^\\d{6}(19|2\\d)?\\d{2}(0[1-9]|1[012])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|X)?$","请填写正确的身份证号码"),
    /**
     * 请填写有效的电话号码
     */
    TEL("tel","^(?:(?:0\\d{2,3}[\\- ]?[1-9]\\d{6,7})|(?:[48]00[\\- ]?[1-9]\\d{6}))$","请填写有效的电话号码'"),
    /**
     * 请填写有效的手机号
     */
    MOBILE("mobile","^1[3-9]\\d{9}$","请填写有效的手机号"),
    /**
     * 请检查邮政编码格式
     */
    ZIPCODE("zipcode","^\\d{6}$","请检查邮政编码格式"),
    /**
     * 请填写中文字符
     */
    CHINESE("chinese","^\\w{3,12}$","请填写中文字符"),
    /**
     * 请填写3-12位数字、字母、下划线
     */
    USERNAME("username","^\\d{6}$","请填写3-12位数字、字母、下划线"),
    /**
     * 请填写6-16位字符，不能包含空格
     */
    password("password","^[\\S]{6,16}","请填写6-16位字符，不能包含空格"),
    /**
     * 请填写有效的编码由3-50位数字、字母、下划线组成
     */
    eovacode("eovacode","^\\w{3,50}$","请填写有效的编码由3-50位数字、字母、下划线组成"),
    /**
     * 请填写有效的金额
     */
    money("money","^(?!0\\.00)(?:0|[1-9]\\d*)(?:\\.\\d{1,2})?$","请填写有效的金额");

    private String code;
    private String validator;
    public static String getDesc(String name) {
        Map map = new HashMap<>();
        for (ValidatorParamEnum emu : ValidatorParamEnum.values()) {
            if (emu.code.equals(name)) {
                return emu.validator;
            }
        }
        return name;
    }
     ValidatorParamEnum(String code, String validator,String desc) {
        this.code = code;
        this.validator = validator;
    }

    public String getValidator() {
        return validator;
    }
    public String getCode() {
        return code;
    }
}
